package entidadesparaguardardadosteste;

import gui.DeclaracaoDeMetodo;

import java.io.Serializable;
import java.util.LinkedList;

public class CasoDeTeste 
{
	private int idCasoDeTeste;
	private String enderecoDoProjetoDaClasseATestar;
	private String nomeClasseAssociadaAoCasoDeTeste;
	private DeclaracaoDeMetodo metodo;
	private LinkedList<Object> valoresDosParametrosDoMetodo;
	private Object valorEsperadoDaSaida;
	private volatile boolean casoDeTesteEstahCompleto;
	
	private boolean metodoAssociadoPossuiRetorno; //se o metodo foi "void", esse booleano eh false
	
	public CasoDeTeste()
	{
		casoDeTesteEstahCompleto = false;
	}
	
	public CasoDeTeste(int idCasoDeTeste, String nomeClasseAssociadaAoCasoDeTeste)
	{
		this.idCasoDeTeste = idCasoDeTeste;
		this.nomeClasseAssociadaAoCasoDeTeste = nomeClasseAssociadaAoCasoDeTeste;
	}
	
	public int getIdCasoDeTeste() {
		return idCasoDeTeste;
	}
	public void setIdCasoDeTeste(int idCasoDeTeste) {
		this.idCasoDeTeste = idCasoDeTeste;
	}
	public String getNomeClasseAssociadaAoCasoDeTeste() {
		return nomeClasseAssociadaAoCasoDeTeste;
	}
	public void setNomeClasseAssociadaAoCasoDeTeste(
			String nomeClasseAssociadaAoCasoDeTeste) {
		this.nomeClasseAssociadaAoCasoDeTeste = nomeClasseAssociadaAoCasoDeTeste;
	}
	public DeclaracaoDeMetodo getMetodo() {
		return metodo;
	}
	public void setMetodo(DeclaracaoDeMetodo metodo) 
	{
		this.metodo = metodo;
		Class tipoDeRetorno = this.metodo.getTipoDeRetorno();
		String nomeTipoDeRetorno = tipoDeRetorno.getSimpleName();
		
		if(nomeTipoDeRetorno.compareTo("void") == 0)
		{
			this.metodoAssociadoPossuiRetorno = false;
		}
		else
		{
			this.metodoAssociadoPossuiRetorno = true;
		}
	}
	public LinkedList<Object> getValoresDosParametrosDoMetodo() {
		return valoresDosParametrosDoMetodo;
	}
	public void setValoresDosParametrosDoMetodo(
			LinkedList<Object> valoresDosParametrosDoMetodo) {
		this.valoresDosParametrosDoMetodo = valoresDosParametrosDoMetodo;
	}
	
	public boolean getMetodoAssociadoPossuiRetorno()
	{
		return this.metodoAssociadoPossuiRetorno;
	}

	public boolean oCasoDeTesteEstahCompleto() {
		return casoDeTesteEstahCompleto;
	}

	public void setCasoDeTesteEstahCompleto(boolean casoDeTesteEstahCompleto) {
		this.casoDeTesteEstahCompleto = casoDeTesteEstahCompleto;
	}
	
	public Object getValorEsperadoDaSaida() {
		return valorEsperadoDaSaida;
	}

	public void setValorEsperadoDaSaida(Object valorEsperadoDaSaida) {
		this.valorEsperadoDaSaida = valorEsperadoDaSaida;
	}

	public String getEnderecoDoProjetoDaClasseATestar() {
		return enderecoDoProjetoDaClasseATestar;
	}

	public void setEnderecoDoProjetoDaClasseATestar(
			String enderecoDoProjetoDaClasseATestar) {
		this.enderecoDoProjetoDaClasseATestar = enderecoDoProjetoDaClasseATestar;
	}
	
	
	
	
	
	

}
